//
//  Data.m
//  sqlTutorial
//
//  Created by Andrea Busi on 23/09/09.
//  Copyright 2009 BubiDevs. All rights reserved.
//

#import "Data.h"

static sqlite3 *database = nil;

@implementation Data

@synthesize lista;

// Inizializziamo l'oggetto della classe Data
- (id)init:(NSString *)pathDB{
	// carichiamo i valori dal database
	[self caricaValoriDaDB:pathDB];
    return self;
}

// Ritorna la dimensione della lista (n° di elementi letti dal db)
- (unsigned)getSize {
    return [lista count];
}

// Ritorna l'oggetto ad una data posizione
- (id)objectAtIndex:(unsigned)index {
    return [lista objectAtIndex:index];
}

// Carica i valori dal database passato come parametro
- (void)caricaValoriDaDB:(NSString *)dbPath {
	NSLog(@"path: %@",dbPath);
	// lista temporanea
	NSMutableArray *listaTemp = [[NSMutableArray alloc] init];
	// Oggetto che contiene i vari elementi
    NSMutableDictionary *dictionary;
	
	NSMutableString *idPersona;//id della persona
	NSMutableString *nome;//nome della persona
	NSMutableString *cognome;//cognome della persona
	
	if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
		// query che ricava i valori
		const char *sql = "select ID, Nome, Cognome from PERSONA";
		sqlite3_stmt *selectstmt;
		
		if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {
			while(sqlite3_step(selectstmt) == SQLITE_ROW) {
				// ricaviamo i valori letti dalla query
				idPersona = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 0)];
				nome = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];
				cognome = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 2)];
				// inseriamo tutti i valori letti in un unico oggetto
				dictionary = [[NSMutableDictionary alloc] initWithObjectsAndKeys:idPersona, @"id", nome, @"nome", cognome, @"cognome", nil];
				[listaTemp addObject:dictionary];
				[dictionary release];
			}
	 	}
		self.lista = listaTemp;
		[listaTemp release];
	}
	else
		sqlite3_close(database);
	NSLog(@"tutto ok");
}

+(void)finalizeStatements {
	if(database) 
		sqlite3_close(database);
}

-(void)dealloc {
	[lista release];
	[super dealloc];
}



@end
